package com.atguigu.school.mapper;

import com.atguigu.school.pojo.Student;
import com.atguigu.school.pojo.Teacher;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 访问教师数据
 *
 * @author 刘逸晖
 */
public interface TeacherMapper {

    /**
     * 新增教师
     *
     * @param teacher 教师信息
     */
    void insertTeacher(Teacher teacher);

    /**
     * 根据 id 更新教师信息
     *
     * @param teacher 教师 id 和新数据
     */
    void updateTeacherById(Teacher teacher);

    /**
     * 根据 id 查询密码
     *
     * @param id 教师的 id
     * @return 教师的密码
     */
    String selectPasswordById(@Param("id") Integer id);

    /**
     * 根据 id 更新密码
     *
     * @param id          教师的 id
     * @param newPassword 新密码
     */
    void updatePasswordById(@Param("id") Integer id, @Param("newPassword") String newPassword);

    /**
     * 批量删除教师
     *
     * @param ids 预删除教师的 id 列表
     */
    void deleteTeachersByIds(@Param("ids") List<Integer> ids);

    /**
     * 根据名字查询教师
     *
     * @param name 教师的名字
     * @return 教师的信息
     */
    Teacher selectTeacherByName(@Param("name") String name);

    /**
     * 根据名称和所属班级的名称查教师
     *
     * @param name      教师的名称，可为空
     * @param clazzName 班级的名称，可为空
     * @param offset    偏移量，从 0 开始
     * @param size      个数
     * @return 教师列表
     */
    List<Teacher> selectTeachersByNameAndClazzName(@Param("name") String name, @Param("clazzName") String clazzName, @Param("offset") Integer offset, @Param("size") Integer size);

    /**
     * 根据名称和所属班级的名称统计教师个数
     *
     * @param name      教师的名称
     * @param clazzName 教师所属班级的名称
     * @return 个数
     */
    Integer countTeachersByNameAndClazzName(@Param("name") String name, @Param("clazzName") String clazzName);

}
